package 转换流;

import org.junit.Test;

import java.io.*;

/**
 * 转换流：
 *       作用：提供字节流与字符流之间的转换
 *       InputStreamReader：使用指定的字符集，读取字节并将它们解码为字符
 *       OutputStreamWriter：使用指定的字符集，将写入其中的字符编码为字节
 *
 *       注意：任何流读取或者写入文件的操作，底层工作实质都是字节流在工作。
 *
 */
public class 将字符流转换为字节流 {
    File f1 = new File("crud.txt");
    File f2 = new File("crud_gbk.txt");
    //创建输入流：字节流
    FileInputStream fis;
    //创建输出流：字节流
    FileOutputStream fos;
    //创建转换流
    InputStreamReader isr;
    OutputStreamWriter osw;
    @Test
    public void test1(){
        try {
            fis = new FileInputStream(f1);
            fos = new FileOutputStream(f2);
            isr = new InputStreamReader(fis,"utf-8");
//            Writer fw = new FileWriter(f2);
            osw = new OutputStreamWriter(fos,"utf-8");
            int len = 0;
            char[] arr = new char[10];
            while ((len = isr.read(arr)) != -1){
                osw.write(arr,0,len);

                //直接使用字符流写入也可以
//                for (char c : arr) {
//                    System.out.println(c);
//                }
//                fw.write(arr,0,len);
            }
//            fw.close();
        } catch (Exception e){
            e.getMessage();
        } finally {

            if (isr != null) {
                try {
                    isr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }if (osw != null) {
                try {
                    osw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}
